using Godot;
using System;
using Smr.枚举;
using Smr.基类;
using Smr;

public partial class 弹窗装备介绍 : 弹窗道具介绍继承
{
    [Export] public Label[] 介绍标签组;
    [Export] private PackedScene 道具出售按钮场景;
    [Export] private PackedScene 道具装备按钮场景;
    [Export] private PackedScene 装备取下按钮场景;

    private C装备模型 装备;

    public override void 置弹窗介绍内容(C道具模型 介绍模型)
    {
        装备 = (C装备模型)介绍模型;

        图标标签.Text = 装备.名称;
        名称标签.Text = 装备.名称;
        描述标签.Text = "     ";

        // 判断介绍道具名称颜色, 设置文字颜色样式
        名称标签.AddThemeColorOverride("font_color", new Color("#ffffff"));
        if (装备.附加属性.Count > 0)
        {
            名称标签.AddThemeColorOverride("font_color", new Color(配置.道具品级颜色[(int)E道具品级.中级]));
        }

        介绍标签组[0].Text = "装备部位：" + 装备.部位.ToString();
        介绍标签组[1].Text = "称谓要求：" + 装备.称谓要求.ToString();
        介绍标签组[2].Text = 装备.基础属性一.属性名 + "：" + 装备.基础属性一.当前值;
        介绍标签组[3].Text = 装备.基础属性二.属性名 + "：" + 装备.基础属性二.当前值;
        for (int i = 0; i < 装备.附加属性.Count; i++)
        {
            标签填写(装备.附加属性[i], i + 4);
        }

        void 标签填写(结构.装备属性 属性, int 索引)
        {
            if (属性.属性名 != null)
            {
                介绍标签组[索引].Visible = true;
                介绍标签组[索引].Text = 属性.属性名 + "：" + 属性.当前值 + " / " + 属性.上限值;
                介绍标签组[索引].AddThemeColorOverride("font_color", new Color(配置.附加属性标签颜色));
            }
        }

        // 装备在背包
        if (装备.道具位置 == E道具位置.背包)
        {
            道具装备按钮 装备按钮 = 道具装备按钮场景.Instantiate<道具装备按钮>();
            装备按钮.UUID = 装备.UUID;
            按钮组容器.AddChild(装备按钮);

            道具出售按钮 出售按钮 = 道具出售按钮场景.Instantiate<道具出售按钮>();
            出售按钮.道具 = 装备;
            按钮组容器.AddChild(出售按钮);
        }
        // 装备在装备栏
        else if (装备.道具位置 == E道具位置.装备栏)
        {
            装备取下按钮 按钮 = 装备取下按钮场景.Instantiate<装备取下按钮>();
            按钮.部位 = 装备.部位;
            按钮组容器.AddChild(按钮);
        }
    }
}
